package yl.hs.bmipfull.service.finance;

import yl.hs.bmipfull.pojo.finance.ShipInvoiceRecordEntity;
import yl.hs.bmipfull.viewmodels.PageQuery;
import yl.hs.bmipfull.viewmodels.PageResult;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @author 张凯
 * @apiNote 发货开票记录-IService
 * @since 2022/1/11 4:04 下午 创建
 */
public interface IShipInvoiceRecordService extends IFinanceService{

    /**
     * 根据合同sn合计开票金额
     * @param contractSn 合同sn
     * @return 合计开票金额
     */
    BigDecimal sumInvoiceAmountByContractSn(String contractSn);


    /**
     * 查询开票记录信息
     * @param pageQuery 查询条件 {@link PageQuery}
     * @return 开票记录信息-List<{@link ShipInvoiceRecordEntity}>
     * @throws Exception 查询参数异常
     */
    List<ShipInvoiceRecordEntity> queryList(PageQuery pageQuery)throws Exception;
    /**
     * 查询开票记录信息
     * @param pageQuery 查询条件 {@link PageQuery}
     * @param rowNum 每页条数
     * @param page 页码
     * @return 开票记录分页信息-PageResult<{@link ShipInvoiceRecordEntity}>
     * @throws Exception 查询条件异常
     */
    PageResult<ShipInvoiceRecordEntity> queryPage(PageQuery pageQuery, int rowNum, int page) throws Exception;



    /**
     * 根据开票记录编号查询开票记录信息
     * @param sn 编号
     * @return 开票记录-{@link ShipInvoiceRecordEntity}
     */
    ShipInvoiceRecordEntity findBySn(String sn);

    /**
     * 保存开票记录信息
     * @param model 开票记录表单信息
     * @param sn 开票记录信息原有编号
     * @return 执行结果-受影响行数-Integer
     * @throws Exception 保存异常
     */
    Integer saveShipInvoiceRecord(Map<String, Object> model, String sn)throws Exception;

    /**
     * 根据开票记录编号删除开票记录信息
     * @param sn 开票记录编号
     * @return 影响行数
     */
    Integer delete(String[]sn);
}
